class Person implements Comparable<Person>{

    @Override
    public int compareTo(Person o) {
        return 0;
    }
}
class MyArray<T>{
//  public T[] array= new T[10];
    public Object[] array= new Object[10];
    public void setArray(int pos, T val){
        this.array[pos] = val;
    }
    public T get(int pos){
        return (T)array[pos];
    }
}

//写一个泛型类，求数组的最大值
class Alg<T extends Comparable<T>>{
//     泛型的上界
//    Object原本是没有实现comparable方法的
//    通过<T extends Comparable<T>>，这个T一定实现了comparable接口的
    public T findMax(T[] array){
        T max = array[0];
        for (int i = 0; i < array.length; i++) {
            if (array[i].compareTo(max)>0){
                max = array[i];
            }
        }
        return max;
    }
}

class Alg2{
    //    泛型方法
    public<T extends Comparable<T>> T findMax(T[] array){
        T max = array[0];
        for (int i = 0; i < array.length; i++) {
            if (array[i].compareTo(max)>0){
                max = array[i];
            }
        }
        return max;
    }
}

public class Demo03 {

    public static void main2(String[] args) {
        Integer[] array = {44,11,2,5,1,99,10};
        Alg<Integer> alg = new Alg<>();
        System.out.println(alg.findMax(array));

//        Person本身没有实现comparable接口
        Alg<Person> alg2 = new Alg<Person>();
    }
    public static void main1(String[] args) {
        MyArray<String> array1 = new MyArray<>();
        MyArray<Integer> array2 = new MyArray<>();
    }
}
